home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Euroscene 2
/
Euroscene 2.iso
/
USEFUL
/
darkroom.s
< prev
next >
Wrap
Text File
|
1995-10-27
|
36KB
|
2,094 lines
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
»
» DarkRoom -40k Intro by Dweezil
»
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
rot equ 213
zmp equ 437
part2_flash equ 215
part2_tm equ 430
part3_tm equ 400
w_blit macro
.\@wb btst #6,$002(a6)
bne.b .\@wb
endm
go move.l $4.w,a6
moveq #0,d0
lea gfxname_0(pc),a1
jsr -$228(a6)
move.l d0,gfxbase_0
beq exit_0
move.l d0,a6
move.l $22(a6),wbview_0
sub.l a1,a1
jsr -$de(a6)
jsr -$10e(a6)
jsr -$10e(a6)
; jsr -$1e8(a6)
jsr -$e4(a6)
bsr z_init
lea $dff000,a6
move #$0020,$096(a6)
clr.l $140(a6)
; move #$4000,$09a(a6)
move.l #copper_0,$080(a6)
bsr clbss_0
bsr go_part_1
move.l #copper_0,$080(a6)
bsr clbss_0
bsr go_part_2
move.l #copper_0,$080(a6)
bsr clbss_0
bsr go_part_3
move.l #copper_0,$080(a6)
bsr clbss_0
bsr go_part_4
bsr z_end
move #$8020,$dff096
move.l gfxbase_0(pc),a6
jsr -$e4(a6)
; jsr -$1ce(a6)
move.l wbview_0(pc),a1
jsr -$de(a6)
jsr -$10e(a6)
jsr -$10e(a6)
move.l $26(a6),$dff080
move.l a6,a1
move.l $4.w,a6
jsr -$19e(a6)
exit_0 moveq #0,d0
rts
»» Clear bss-hunk
clbss_0 moveq #0,d0
move.l d0,d1
move.l d0,d2
move.l d0,d3
move.l d0,a0
move.l d0,a1
move.l d0,a2
move.l d0,a3
lea chip+chip_siz,a4
move #chip_siz>>8-1,d4
.clfast rept 8
movem.l d0-d3/a0-a3,-(a4)
endr
dbf d4,.clfast
rts
gfxname_0 dc.b "graphics.library",0
even
gfxbase_0 dc.l 0
wbview_0 dc.l 0
;; <1>
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
»
» " S o l a r W i n d "
»
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
go_part_1 bsr s_init_1
sf stuff_1
mouse_1 bsr do_wind_1
move.l #scopa_1,$080(a6)
bsr plus_1
bsr do_wind_1
move.l #scopb_1,$080(a6)
bsr minus_1
cmp #zmp+170,frame_1
bhs.b .x
btst #6,$bfe001
bne.b mouse_1
.x rts
s_init_1 lea sptra_1,a0
move.l #bpa1_1,d2
lea sptrb_1,a1
move.l #bpb1_1,d3
moveq #0,d1
moveq #3,d0
.1 move d2,6(a0,d1.w)
swap d2
move d2,2(a0,d1.w)
swap d2
move d3,6(a1,d1.w)
swap d3
move d3,2(a1,d1.w)
swap d3
addq #8,d1
add.l #10240,d2
add.l #10240,d3
dbf d0,.1
lea fractar_1,a0
move #$17f,d2
move #$181,d3
bsr do_prog_1
lea zoomaa_1,a0
move #-1,d2
move #$180,d3
bsr do_prog_1
lea rotate_1,a0
move #$180,d2
move #1,d3
bsr do_prog_1
move.l #scopa_1,$080(a6)
rts
do_wind_1 addq #1,frame_1
moveq #0,d0
move frame_1(pc),d0
move.l prgptr_1(pc),a0
cmp.l (a0),d0
bne.b .zop
move.l 4(a0),d0
move.l d0,twist_1
cmp.l #zoomaa_1,d0
bne.b .2
st stuff_1
.2 addq.l #8,prgptr_1
.zop
bsr do_pos_1
bsr do_tube_1
bsr do_blit_1
bsr do_bli2_1
rts
frame_1 dc 0
twist_1 dc.l hold_1
prgptr_1 dc.l program_1
program_1 dc.l 1,fractar_1
dc.l rot,rotate_1
dc.l zmp,zoomaa_1
dc.l -1,-1
»» calculate blit prog
do_prog_1 move d3,d6
asl #2,d3
move d2,d5
asl #2,d2
add d5,d2
moveq #8,d1
.l1 move d2,d7
moveq #10,d0
.l2 move d3,d4
add d7,d4
move d4,(a0)+
sub d5,d7
dbf d0,.l2
sub d6,d3
dbf d1,.l1
rts
»» + laskuosuus bpa -> bpb
plus_1 w_blit
moveq #0,d0
move.l d0,$040(a6)
move.l d0,$060(a6)
move.l d0,$064(a6)
moveq #-1,d0
move.l d0,$044(a6)
move #$0f80,$040(a6) bpa2 and bpa3 and bpa4 -> t
move.l #bpa2_1,$050(a6)
move.l #bpa3_1,$04c(a6)
move.l #bpa4_1,$048(a6)
move.l #t_1,$054(a6)
move #$4014,$058(a6)
w_blit
move #8,$062(a6)
move #$0fe6,$040(a6) bpa1 + g -> bpb1
move.l #t_1,$050(a6)
move.l #g_1,$04c(a6)
move.l #bpa1_1,$048(a6)
move.l #bpb1_1,$054(a6)
move #$4014,$058(a6)
w_blit
move #0,$062(a6)
move #$0f9a,$040(a6) bpa2 + 1 -> bpb2
move.l #bpa1_1,$050(a6)
move.l #bpb1_1,$04c(a6)
move.l #bpa2_1,$048(a6)
move.l #bpb2_1,$054(a6)
move #$4014,$058(a6)
w_blit
move #$0f9a,$040(a6) bpa3 + 1 -> bpb3
move.l #bpa2_1,$050(a6)
move.l #bpb2_1,$04c(a6)
move.l #bpa3_1,$048(a6)
move.l #bpb3_1,$054(a6)
move #$4014,$058(a6)
w_blit
move #$0f9a,$040(a6) bpa4 + 1 -> bpb4
move.l #bpa3_1,$050(a6)
move.l #bpb3_1,$04c(a6)
move.l #bpa4_1,$048(a6)
move.l #bpb4_1,$054(a6)
move #$4014,$058(a6)
rts
»» - laskuosuus bpb -> bpa
minus_1 w_blit
moveq #0,d0
move.l d0,$040(a6)
move.l d0,$060(a6)
move.l d0,$064(a6)
moveq #-1,d0
move.l d0,$044(a6)
move #$0f01,$040(a6) bpb2 and bpb3 and bpb4 -> t
move.l #bpb2_1,$050(a6)
move.l #bpb3_1,$04c(a6)
move.l #bpb4_1,$048(a6)
move.l #t_1,$054(a6)
move #$4014,$058(a6)
w_blit
move #8,$062(a6)
move #$0f89,$040(a6) bpb1 - g -> bpa1
move.l #t_1,$050(a6)
move.l #g_1,$04c(a6)
move.l #bpb1_1,$048(a6)
move.l #bpa1_1,$054(a6)
move #$4014,$058(a6)
w_blit
move #0,$062(a6)
move #$0fa6,$040(a6) bpb2 - 1 -> bpa2
move.l #bpb1_1,$050(a6)
move.l #bpa1_1,$04c(a6)
move.l #bpb2_1,$048(a6)
move.l #bpa2_1,$054(a6)
move #$4014,$058(a6)
w_blit
move #$0fa6,$040(a6) bpb2 - 1 -> bpa2
move.l #bpb2_1,$050(a6)
move.l #bpa2_1,$04c(a6)
move.l #bpb3_1,$048(a6)
move.l #bpa3_1,$054(a6)
move #$4014,$058(a6)
w_blit
move #$0fa6,$040(a6) bpb2 - 1 -> bpa2
move.l #bpb3_1,$050(a6)
move.l #bpa3_1,$04c(a6)
move.l #bpb4_1,$048(a6)
move.l #bpa4_1,$054(a6)
move #$4014,$058(a6)
rts
»» put random stuff in the middle of the screen
do_tube_1 move.l rand_1(pc),d0
add frame_1(pc),d0
; add.l $004(a6),d0
ror.l #5,d0
eor #$1dc4,d0
move.l d0,rand_1
lea g_1,a0
tst.b stuff_1
bne.b .2
moveq #3,d1
.1 eor.b d0,126*48+19(a0)
swap d0
eor.b d0,126*48+20(a0)
add #48,a0
add a0,d0
ror.l #1,d0
dbf d1,.1
rts
.2 moveq #3,d1
.3 clr.b 126*48+19(a0)
clr.b 126*48+20(a0)
add #48,a0
dbf d1,.3
rts
stuff_1 dc 0
»» do the twist!
do_pos_1 moveq #$1f,d0
and frame_1(pc),d0
add d0,d0
lea .tab(pc),a0
move (a0,d0),d0
move d0,apos_1
rts
.tab dc %00000,%10000,%01000,%11000,%00100,%10100,%01100,%11100
dc %00010,%10010,%01010,%11010,%00110,%10110,%01110,%11110
dc %00001,%10001,%01001,%11001,%00101,%10101,%01101,%11101
dc %00011,%10011,%01011,%11011,%00111,%10111,%01111,%11111
apos_1 dc 0
»» takaisinkopsublitti
do_bli2_1 move apos_1(pc),d0
muls #24,d0
move apos_1(pc),d1
asr #4,d1
add d1,d0
add d0,d0
ext.l d0
lea t_1+$c0a,a0
sub.l d0,a0
move apos_1(pc),d1
ror #4,d1
and #$f000,d1
or #$09f0,d1
w_blit
move d1,$040(a6) t+logo -> g
move.l #0,$044(a6)
move.l #$ffffffff,$044(a6)
move.l #$00000000,$060(a6)
move.l #$00000000,$064(a6)
move.l a0,$050(a6)
move.l #g_1,$054(a6)
move #$4018,$058(a6)
rts
»» blitter driver for zoomer
do_blit_1 lea g_1-$c08,a0
lea t_1,a4
move apos_1(pc),d5
move d5,d4
muls #384,d5
add d4,d5
subq #1,d5
move #$0803,d3 bltsize
move.l twist_1(pc),a1
add #$62c,a4 start pos.
add #$62c,a0
move #$62c,d7 'modulo'
moveq #8,d6 loop counter
lea $dff002,a6
.blit1 btst #6,(a6)
bne.b .blit1
move #$0000,$042-2(a6) clear bltcon1
move.l #$ffffffff,$044-2(a6) set masks
move.l #$002a002a,$064-2(a6) set modulos for A & D
.loop2 moveq #10,d4
.loop1 move (a1)+,d0
add d5,d0
moveq #$f,d2
and d0,d2
add d2,d2
move .con0(pc,d2),d2
asr #3,d0
lea (a0,d0),a3
.blit2 btst #6,(a6)
bne.b .blit2
move d2,$040-2(a6) set bltcon0
movem.l a3/a4,$050-2(a6) set bltaptr & bltdptr
move d3,$058-2(a6) set size
subq #4,a0
subq #4,a4
dbf d4,.loop1
add d7,a0
add d7,a4
dbf d6,.loop2
lea $dff000,a6
rts
.con0 dc $f9f0,$e9f0,$d9f0,$c9f0,$b9f0,$a9f0,$99f0,$89f0
dc $79f0,$69f0,$59f0,$49f0,$39f0,$29f0,$19f0,$09f0
rand_1 dc.l $deadbeef
;; <2>
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
»
» " P a r t i c l e s "
»
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
go_part_2 lea $dff000,a6
mouse_2 tst.b 5(a6)
beq.b mouse_2
.1 tst.b 5(a6)
bne.b .1
bsr laita2_2
cmp #part2_flash,frame_2
bne.b .rer
bsr laita1_2
.rer movem.l scr1_2(pc),d0-d3
move.l d0,d4
move.l d1,d0
move.l d2,d1
move.l d3,d2
move.l d4,d3
movem.l d0-d3,scr1_2
move.l d0,$0e0(a6)
move.l d1,$0e4(a6)
move.l d2,$0e8(a6)
move.l #bpl_tx_2,$0ec(a6)
move frame_2(pc),d0
addq #1,d0
move d0,frame_2
move.l parpt_2(pc),a0
cmp frame2_2(pc),d0
bne.b .3
addq #4,a0
tst.b 1(a0)
bpl.b .2
lea param_2(pc),a0
.2 moveq #0,d1
move.b (a0),d1
add d0,d1
move d1,frame2_2
move.l a0,parpt_2
.3 move.b 2(a0),d0
move.b 3(a0),d1
bsr vaaka_2
bsr pysty_2
move frame_2(pc),d0
cmp #part2_tm+16,d0
beq.b .x
cmp #part2_tm,d0
blo.b .4
bsr fadeout_2
.4
move.l #copper_2,$080(a6)
btst #6,$bfe001
bne mouse_2
.x rts
frame_2 dc 0
frame2_2 dc 1
parpt_2 dc.l param_2
param_2 dc.b 1,$00,$05,$ff
dc.b 1,$00,$02,$00
dc.b 1,$00,$07,$ff
dc.b 1,$00,$00,$00
dc.b 1,$00,$01,$ff
dc.b 1,$00,$06,$00
dc.b 1,$00,$03,$ff
dc.b 1,$00,$04,$00
dc.l -1
scr1_2 dc.l bpl1_2
scr2_2 dc.l bpl2_2
scr3_2 dc.l bpl3_2
scr4_2 dc.l bpl4_2
fadeout_2 lea fadehere_2,a0
moveq #15,d3
.lo addq #2,a0
move (a0),d0
move d0,d1
move d0,d2
and #$000f,d0
and #$00f0,d1
and #$0f00,d2
subq #$0001,d0
bpl.b .1
moveq #0,d0
.1 sub #$0010,d1
bpl.b .2
moveq #0,d1
.2 sub #$0100,d2
bpl.b .3
moveq #0,d2
.3 or d2,d0
or d1,d0
move d0,(a0)+
dbf d3,.lo
rts
laita1_2 move.l scr2_2(pc),a0
add #112*40+18,a0
moveq #-1,d0
moveq #7,d1
.1 move.l d0,(a0)
move.l d0,40(a0)
move.l d0,80(a0)
move.l d0,120(a0)
add #160,a0
dbf d1,.1
rts
laita2_2
move.l scr2_2(pc),a0
add #112*40,a0
lea pic_2,a1
lea bpl_tx_2,a2
add #112*40,a2
moveq #31,d0
and frame_2(pc),d0
mulu #40,d0
add d0,a0
add d0,a1
add d0,a2
.1 rept 10
move.l (a1)+,d2
or.l d2,(a0)+
move.l d2,(a2)+
endr
rts
»» vaakasuuntainen siirto
v_bsiz_2 = $0105
vaaka_2 move.l scr1_2(pc),a0
lea temp_2,a1
move #255,d4
moveq #40,d2
w_blit
moveq #0,d3
move d3,$042(a6)
move.l d3,$064(a6)
moveq #-1,d3
move.l d3,$044(a6)
.lp move d1,d3
eor d4,d3
btst d0,d3
beq.b .bit1
w_blit
move #$19f0,$040(a6)
movem.l a0/a1,$050(a6)
move #v_bsiz_2,$058(a6)
add d2,a0
add d2,a1
dbf d4,.lp
rts
.bit1 addq #2,a0
w_blit
move #$f9f0,$040(a6)
movem.l a0/a1,$050(a6)
move #v_bsiz_2,$058(a6)
add #38,a0
add d2,a1
dbf d4,.lp
rts
»» pystypalkkien siirrot
pysty_2 lea temp_2,a0
lea 40(a0),a1
sub #40,a0
move.l scr2_2(pc),a2
moveq #-32,d2
moveq #19,d6
w_blit
move #0,$042(a6)
moveq #38,d3
move d3,$062(a6)
move d3,$064(a6)
move d3,$066(a6)
moveq #-1,d3
move.l d3,$044(a6)
.ilo moveq #15,d5
.l1 move d1,d3
eor d2,d3
add d4,d4
btst d0,d3
bne.b .l1z
addq #1,d4
.l1z addq #1,d2
dbf d5,.l1
w_blit
move #$0dd8,$040(a6)
movem.l a0/a1/a2,$04c(a6)
move d4,$070(a6)
move #$4001,$058(a6)
addq #2,a0
addq #2,a1
addq #2,a2
dbf d6,.ilo
rts
;; <3>
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
»
» " F i r e F l i e s "
»
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
offs_3 = $780
go_part_3 lea $dff000,a6
bsr init_3
bsr dosine_3
mouse_3 tst.b 5(a6)
beq.b mouse_3
.1 tst.b 5(a6)
bne.b .1
addq #1,frame_3
move #$7fe,d1
move.l posse_3(pc),d2
add.l speed_3(pc),d2
move.l d2,posse_3
swap d2
add.l #$800,speed_3
move d2,d0
and d1,d0
lea sin_3,a0
lea cos_3-sin_3(a0),a1
lea coords_3(pc),a2
move (a0,d0),(a2)+
move (a1,d0),(a2)+
lsr #1,d2
add #offs_3,d2
move d2,d0
and d1,d0
move (a0,d0),(a2)+
move (a1,d0),(a2)+
lsr #1,d2
add #offs_3,d2
move d2,d0
and d1,d0
move (a0,d0),(a2)+
move (a1,d0),(a2)+
lsr #1,d2
add #offs_3,d2
move d2,d0
and d1,d0
move (a0,d0),(a2)+
move (a1,d0),(a2)+
lsr #1,d2
add #offs_3,d2
move d2,d0
and d1,d0
move (a0,d0),(a2)+
move (a1,d0),(a2)+
movem.l coords_3-2(pc),d0-d4
lea star_3+512-160,a0
lea (a0,d1),a1
lea (a0,d2),a2
lea (a0,d3),a3
lea (a0,d4),a4
add d0,a0
bsr vaaka_3
movem.l coords_3(pc),d0-d4
lea star_3+512-128,a0
lea (a0,d1),a1
lea (a0,d2),a2
lea (a0,d3),a3
lea (a0,d4),a4
add d0,a0
bsr pysty_3
move.l cop2_3(pc),$080(a6)
lea ptexg_3(pc),a0
movem.l (a0),d0-d3
exg d0,d1
exg d2,d3
movem.l d0-d3,(a0)
cmp #part3_tm,frame_3
beq.b .x
btst #6,$bfe001
bne mouse_3
.x rts
speed_3 dc.l $80000
frame_3 dc 0
posse_3 dc.l 0
ptexg_3
cop1_3 dc.l copper1_3
cop2_3 dc.l copper2_3
scrl1_3 dc.l line1_3
scrl2_3 dc.l line2_3
coords_3 dc 0,0
dc 0,0
dc 0,0
dc 0,0
dc 0,0
»» Calculate sin & cos lists using formula sin a = a-a^3/3!+a^5/5!-a^7/7!
»» 11 bits are used in the calculations for precision
dosine_3 lea sin_3,a0
lea 1024(a0),a1
moveq #0,d4
move #255,d3
.l1 move.l d4,d0
swap d0
add.l #823550,d4 Pi<<18
move d0,d2
move d0,d1
mulu d1,d1
lsl.l #4,d1
swap d1
mulu d1,d0
divu #3<<11,d0
sub d0,d2
mulu d1,d0
divu #10<<11,d0
add d0,d2
mulu d1,d0
divu #21<<11,d0
sub d0,d2
asr #4,d2
move d2,(a0)+
move d2,2046(a0)
move d2,-(a1)
neg d2
move d2,1022(a0)
move d2,1024(a1)
dbf d3,.l1
rts
»»»»»»» inittialiohjelma »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
init_3 lea l_even_3,a1 Muodostetaan 1/0 bittitasot
lea l_odd_3,a0
moveq #-1,d1
moveq #9,d0
.1 move.l d1,(a0)+
clr.l (a1)+
dbf d0,.1
lea copst_3(pc),a0 kopsataan copperlistat
move.l cop1_3(pc),a1
move.l cop2_3(pc),a2
moveq #copstl_3>>2-1,d0
.c1 move.l (a0),(a1)+
move.l (a0)+,(a2)+
dbf d0,.c1
move.l scrl1_3(pc),d0 laitetaan niihin bpl-pointterit
move.l cop1_3(pc),a0
bsr .cz
move.l scrl2_3(pc),d0
move.l cop2_3(pc),a0
bsr .cz
bsr inz_cl_3
bsr do_sqt_3
rts
»»
.cz moveq #4-1,d1 Asettaa bpl-pointterit copperlistaan
.cz1 move d0,bploff_3+4(a0)
swap d0
move d0,bploff_3(a0)
swap d0
addq #8,a0
add.l #40,d0
dbf d1,.cz1
rts
copst_3 dc $008e,$2c81,$0090,$2cc1 Copperlistan alku
dc $0092,$0038,$0094,$00d0
dc $0100,$5000,$0102,$0000
dc $0104,$0000,$0180,$0000
dc $0108,$ffd8,$010a,$ffd8
bploff_3 = *-copst_3+2
dc $00e0,$0000,$00e2,$0000
dc $00e4,$0000,$00e6,$0000
dc $00e8,$0000,$00ea,$0000
dc $00ec,$0000,$00ee,$0000
copstl_3 = *-copst_3
»» varilistat yms. rakennetaan
inz_cl_3 lea cmaps_3,a0
lea $1200(a0),a1
lea .ctab(pc),a3
lea cptab_3,a4
moveq #0,d4
moveq #$3f,d7
.1 move.l a0,(a4)+
move.l #l_even_3,d1
move #$00f2,(a0)+
move d1,(a0)+
move #$00f0,(a0)+
swap d1
move d1,(a0)+
move.l #l_odd_3,d1
move #$00f2,(a1)+
move d1,(a1)+
move #$00f0,(a1)+
swap d1
move d1,(a1)+
move #$0180,d1
move #$01a0,d2
moveq #$f,d6
.2 and #$7e,d4
move (a3,d4),d3
addq #8,d4
move d1,(a0)+
move d3,(a0)+
move d2,(a1)+
move d3,(a1)+
addq #2,d1
addq #2,d2
dbf d6,.2
addq #2,d4
dbf d7,.1
rts
.ctab blk 24,0
dc $000,$001,$002,$003,$004,$005,$006,$007
dc $008,$009,$00a,$00b,$00c,$00d,$00e,$00f
dc $22f,$44f,$88f,$aaf,$ccf,$eef,$fff,$fff
dc $fff,$fff,$fff,$fff,$fff,$eef,$ccf,$aaf
dc $88f,$11e,$00c,$00a,$008,$006,$004,$002
blk 32,0
dc $000,$001,$002,$003,$004,$005,$006,$007
dc $008,$009,$00a,$00b,$00c,$00d,$00e,$00f
dc $00e,$00d,$01c,$02b,$03a,$049,$058,$067
dc $076,$085,$094,$0a3,$0b2,$0c1,$0d0,$0e0
dc $0f0,$0e0,$0d0,$1c0,$2b0,$3a0,$490,$580
dc $670,$760,$850,$940,$a30,$b20,$c10,$d00
dc $e00,$f00,$e00,$d00,$c00,$b00,$a00,$900
dc $800,$700,$600,$500,$400,$300,$200,$100
»» muodostetaan taulukkoja
do_sqt_3 lea star_3,a0
lea 1024(a0),a1
move #511,d0
.1 moveq #5,d2
add d0,d2
move.l #$100,d1
divu d2,d1
move.b d1,(a0)+
move.b d1,-(a1)
dbf d0,.1
rts
»» rakennetaan copperlista
pysty_3 move.l #$2c01fffe,d1
move.l #$01000000,d2
move.l cop2_3(pc),a5
add #copstl_3,a5
moveq #$7f,d3
w_blit
move.l #$09f00000,$040(a6)
move.l #$ffffffff,$044(a6)
move.l #$00000000,$064(a6)
.zoka move.b (a0)+,d0 Even line
add.b (a1)+,d0
add.b (a2)+,d0
add.b (a3)+,d0
add.b (a4)+,d0
and #$fc,d0
move.l cptab_3(pc,d0),d0
move.l d1,(a5)+
add.l d2,d1
w_blit
move.l d0,$050(a6)
move.l a5,$054(a6)
move #$0109,$058(a6)
add #$48,a5
move.b (a0)+,d0 Odd line
add.b (a1)+,d0
add.b (a2)+,d0
add.b (a3)+,d0
add.b (a4)+,d0
and #$fc,d0
move.l cptab_3(pc,d0),d0
add.l #$1200,d0
move.l d1,(a5)+
add.l d2,d1
bcc.b .b3
move.l #$ffe1fffe,(a5)+
.b3 w_blit
move.l d0,$050(a6)
move.l a5,$054(a6)
move #$0109,$058(a6)
add #$48,a5
dbf d3,.zoka
move.l #$01800000,(a5)+
move.l #-2,(a5)+
rts
cptab_3 ds.l $40
»» rakennetaan vaakarivi
vaaka_3 move.l scrl2_3(pc),a5
moveq #9,d7
.a moveq #15,d5
.b rept 2
move.b (a0)+,d0
add.b (a1)+,d0
add.b (a2)+,d0
add.b (a3)+,d0
add.b (a4)+,d0
add.b d0,d0
addx.l d4,d4
add.b d0,d0
addx.l d3,d3
add.b d0,d0
addx.l d2,d2
add.b d0,d0
addx.l d1,d1
endr
dbf d5,.b
move.l d4,120(a5)
move.l d3,80(a5)
move.l d2,40(a5)
move.l d1,(a5)+
dbf d7,.a
rts
;; <4>
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
»
» " L a z e r s "
»
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
lines_4 = 64
go_part_4 lea $dff000,a6
move.b #$ac,lin1_4
move.b #$ac,lin2_4
bsr do_sine_4
mouse_4 tst.b 5(a6)
beq.b mouse_4
.1 tst.b 5(a6)
bne.b .1
bsr.b avaa_4
movem.l scr1_4(pc),d0-d1
exg d0,d1
movem.l d0-d1,scr1_4
add.l #$500,d0
move.l d0,$0e0(a6)
move.l d0,$0e4(a6)
move.l #pic_4,$0e8(a6)
addq #1,frame_4
bsr clear_4
bsr radat_4
bsr dolines_4
move.l #copper_4,$080(a6)
btst #6,$bfe001
bne mouse_4
rts
frame_4 dc 0
avaa_4 move.b lin1_4,d0
cmp.b #$99,d0
beq.b .x
subq.b #1,lin1_4
addq.b #1,lin2_4
.x rts
»» Clear
clear_4 w_blit
move.l #$01000000,$040(a6)
move #0,$066(a6)
move.l scr2_4(pc),a0
add #32*40,a0
move.l a0,$054(a6)
move #$4014,$058(a6)
rts
»» Laskee radat
radat_4 move.l #$ffff,d2
move frame_4(pc),d6
moveq #$40,d0
sub d6,d0
bmi.b .fg
asr #2,d0
ror.l d0,d2
.fg moveq #0,d5
sub #$20,d6
add d6,d6
ror d6,d2
move d6,d7
.lp lea sin_4,a1
lea rata_4,a2
move frame_4(pc),d5
btst #8,d5
bne.b .sfg
not d5
add #$100,d5
.sfg sub #$80,d5
ext d5
asl #4,d5
and #$fe,d6
and #$fe,d7
moveq #lines_4-1,d4
.zp move d5,d0
add (a1,d7),d0
add (a1,d6),d0
move 64(a1,d7),d1
add 64(a1,d6),d1
move d0,(a2)+
move d1,(a2)+
move d2,(a2)+
ror #1,d2
addq.b #4,d6
addq.b #8,d7
dbf d4,.zp
rts
»» Lineprutku
dolines_4 move.l scr2_4(pc),a0
add #6420,a0
lea rata_4,a1
w_blit Init line
moveq #-1,d2
move.l d2,$044(a6)
moveq #40,d2
move d2,$060(a6)
move d2,$066(a6)
move #$8000,$074(a6)
moveq #lines_4-1,d5
.ll movem (a1)+,d0/d1/d4
moveq #0,d2 Draw the line
tst d0
bpl.b .1
neg d0
moveq #16,d2
.1 tst d1
bpl.b .2
neg d1
addq #8,d2
.2 cmp d0,d1
blo.b .3
bne.b .z
tst d0
beq.b .x
.z exg d0,d1
addq #4,d2
move #$2002,d3
bra.b .4
.3 move #$2802,d3
.4 add d1,d1
w_blit
move d4,$072(a6)
move.l a0,$048(a6)
move.l a0,$054(a6)
move d1,$062(a6)
sub d0,d1
bpl.b .5
addq #2,d2
.5 move #$0bea,$040(a6)
move .bcon0(pc,d2),$042(a6)
move d1,$052(a6)
sub d0,d1
move d1,$064(a6)
move d3,$058(a6)
.x dbf d5,.ll
rts
.bcon0 dc %0010001,%1010001
dc %0000001,%1000001
dc %0011001,%1011001
dc %0000101,%1000101
dc %0010101,%1010101
dc %0001001,%1001001
dc %0011101,%1011101
dc %0001101,%1001101
»» Calculate sin & cos lists using formula sin a = a-a^3/3!+a^5/5!-a^7/7!
»» 11 bits are used in the calculations for precision
do_sine_4 lea sin_4,a0
lea 128(a0),a1
move.l #823550<<2,d4
moveq #31,d3
.l1 move.l d4,d0
swap d0
add.l #823550<<3,d4 Pi<<18
move d0,d2
move d0,d1
mulu d1,d1
lsl.l #4,d1
swap d1
mulu d1,d0
divu #3<<11,d0
sub d0,d2
mulu d1,d0
divu #10<<11,d0
add d0,d2
mulu d1,d0
divu #21<<11,d0
sub d0,d2
asr #2,d2
move d2,(a0)+
move d2,254(a0)
move d2,-(a1)
neg d2
move d2,126(a0)
move d2,128(a1)
dbf d3,.l1
rts
scr1_4 dc.l bpl1_4
scr2_4 dc.l bpl2_4
;; <5>
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
»
» R e p l a y R o u t i n e
»
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
** ==== Initialize ============================================ **
z
z_unptb dc.b $00,$00,$01,$02,$04,$08,$10,$20
dc.b $40,$ff,$fe,$fc,$f8,$f0,$e0,$c0
z_init lea z_data,a4
lea biisi,a0
move.l a4,a1
move #biisi_l>>3-1,d0
.yt move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
dbf d0,.yt
lea z(pc),a5
move.l 14(a4),d0 UnSqueeze samples
lea (a4,d0.l),a0
move.l (a0)+,d0
lea -4(a0,d0.l),a1
lsr.l #1,d0
add.l d0,a0
subq #1,d0
move d0,d1
.mo move.b -(a0),-(a1)
dbf d1,.mo
subq #4,a0
moveq #0,d1
moveq #0,d3
.un move.b (a1)+,d1
moveq #$f,d2
and d1,d2
lsr #4,d1
tst d1
bne.b .u1
moveq #0,d3
.u1 add.b z_unptb(pc,d1),d3
move.b d3,(a0)+
tst d2
bne.b .u2
moveq #0,d3
.u2 add.b z_unptb(pc,d2),d3
move.b d3,(a0)+
dbf d0,.un
lea $dff000,a6
lea z_vibtb-z(a5),a0 Calculate vibrato table
lea z_sinus-z(a5),a1
moveq #$3f,d0
.1 move (a1)+,d4
moveq #0,d2
moveq #15,d1
.2 move d2,d3
asr #7,d3
move.b d3,(a0)+
add d4,d2
dbf d1,.2
dbf d0,.1
move.l (a4),d0 Add offset to songpos-pointer
lea (a4,d0.l),a0
move.l a0,(a4)
.3 move.l (a0),d0 Add offsets to songpos-table
bmi.s .4
add.l a4,d0
move.l d0,(a0)+
bra.s .3
.4
lea 6(a4),a0
move.l a4,d1
moveq #31-1,d0 Add offsets to samplepointers
z_sloop addq.l #8,a0
add.l d1,(a0)+
add.l d1,(a0)+
dbf d0,z_sloop
moveq #-4,d0
move d0,z_song-z(a5)
move.b d0,z_pos-z(a5)
move.b #$06,z_speed-z(a5)
move.b #$01,z_count-z(a5)
bset #1,$bfe001
lea z_ociab-z(a5),a0
lea $bfd000,a1
move.l $78.w,(a0)+
move.l $6c.w,(a0)+
move.b $400(a1),(a0)+
move.b $500(a1),(a0)+
move.b $e00(a1),(a0)+
move.b $f00(a1),(a0)+
move $01c(a6),(a0)+
move #$7fff,$09a(a6)
move.b #$02,$500(a1) $200 = 11.3 raster lines
move.b #$00,$400(a1)
move.b #$1f,$d00(a1)
move.b #$81,$d00(a1)
move.b #$1c,$e00(a1)
lea z_irq1-z(a5),a0
move.l a0,$78.w
lea z_pirq-z(a5),a0
move.l a0,$6c.w
move #$e020,$09a(a6)
bra z_quiet
** ==== Disable sound ========================================= **
z_end lea $dff000,a6
lea z_ociab(pc),a0
lea $bfd000,a1
move #$7fff,$09a(a6)
move.l (a0)+,$78.w
move.l (a0)+,$6c.w
move.b (a0)+,$400(a1)
move.b (a0)+,$500(a1)
move.b #$af,$d00(a1)
move.b (a0)+,$e00(a1)
move.b (a0)+,$f00(a1)
move (a0)+,d0
or #$8000,d0
move d0,$09a(a6)
z_quiet clr $0a8(a6)
clr $0b8(a6)
clr $0c8(a6)
clr $0d8(a6)
move #$000f,$096(a6)
rts
** ==== Play music ============================================ **
z_pirq movem.l d0-d4/a0-a6,-(sp)
bsr z_music
move #$0020,$09c(a6)
movem.l (sp)+,d0-d4/a0-a6
rte
z_music lea z_data,a4
lea z(pc),a5
lea $dff000,a6
clr z_dmaen-z(a5)
move.b z_speed-z(a5),d0
beq z_ende
subq.b #1,z_count-z(a5) New note?
bne z_nonew
move.b d0,z_count-z(a5)
addq.b #4,z_pos-z(a5) Proceed in song
bne.s z_newpa
move.l (a4),a0 New pattern
addq #4,z_song-z(a5)
move z_song-z(a5),d0
move.l (a0,d0.w),d0
bpl.s .1
clr z_song-z(a5)
clr.b z_pos-z(a5)
move.l (a0),d0
.1 move.l d0,z_patt-z(a5)
z_newpa move.b z_pos-z(a5),d0 Play new notes
move.l z_patt-z(a5),a0
pea .1-z(a5)
lea z_voi1-z(a5),a3
cmp.b (a0),d0
bne z_playo
move.l (a0)+,d1
bra z_playn
.1 pea .2-z(a5)
lea z_voi2-z(a5),a3
addq.b #1,d0
cmp.b (a0),d0
bne z_playo
move.l (a0)+,d1
bra z_playn
.2 pea .3-z(a5)
lea z_voi3-z(a5),a3
addq.b #1,d0
cmp.b (a0),d0
bne z_playo
move.l (a0)+,d1
bra z_playn
.3 pea .4-z(a5)
lea z_voi4-z(a5),a3
addq.b #1,d0
cmp.b (a0),d0
bne z_playo
move.l (a0)+,d1
bra z_playn
.4 move.l a0,z_patt-z(a5)
z_nonew lea z_voi1-z(a5),a1 Do effects
bsr z_doefx
move d4,$0a6(a6)
move 14(a1),$0a8(a6)
lea z_voi2-z(a5),a1
bsr z_doefx
move d4,$0b6(a6)
move 14(a1),$0b8(a6)
lea z_voi3-z(a5),a1
bsr z_doefx
move d4,$0c6(a6)
move 14(a1),$0c8(a6)
lea z_voi4-z(a5),a1
bsr z_doefx
move d4,$0d6(a6)
move 14(a1),$0d8(a6)
move z_dmaen-z(a5),d0
beq.s z_ende
move d0,$096(a6)
or #$8000,d0
move d0,z_dmaen-z(a5)
ror #1,d0
bpl.s .1
move.l z_voi1+2-z(a5),$0a0(a6)
move z_voi1+6-z(a5),$0a4(a6)
.1 ror #1,d0
bpl.s .2
move.l z_voi2+2-z(a5),$0b0(a6)
move z_voi2+6-z(a5),$0b4(a6)
.2 ror #1,d0
bpl.s .3
move.l z_voi3+2-z(a5),$0c0(a6)
move z_voi3+6-z(a5),$0c4(a6)
.3 ror #1,d0
bpl.s .4
move.l z_voi4+2-z(a5),$0d0(a6)
move z_voi4+6-z(a5),$0d4(a6)
.4
z_ende move.b #$1d,$bfde00
rts
z_irq1 tst.b $bfdd00
move z_dmaen(pc),$dff096
move.l #z_irq2,$78.w
move #$2000,$dff09c
move.b #$1d,$bfde00
rte
z_irq2 tst.b $bfdd00
move.l a6,-(sp)
lea $dff000,a6
move.l z_voi1+8(pc),$0a0(a6) Set repeat pointers
move z_voi1+12(pc),$0a4(a6)
move.l z_voi2+8(pc),$0b0(a6)
move z_voi2+12(pc),$0b4(a6)
move.l z_voi3+8(pc),$0c0(a6)
move z_voi3+12(pc),$0c4(a6)
move.l z_voi4+8(pc),$0d0(a6)
move z_voi4+12(pc),$0d4(a6)
move #$2000,$09c(a6)
lea z_irq1(pc),a6
move.l a6,$78.w
move.l (sp)+,a6
move.b #$1c,$bfde00
rte
z_doefx move 16(a1),d4 Get period
move.b 24(a1),d0 Do effect commands
ext d0
add d0,d0
moveq #0,d1
move.b 25(a1),d1 d1 = effect data
move.b z_count-z(a5),d2
cmp.b z_speed-z(a5),d2
bne.s .1
move z_jump1(pc,d0.w),d0
jmp (a5,d0.w)
.1 move z_jump2(pc,d0.w),d0
jmp (a5,d0.w)
z_jump1 dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z Count = Speed
dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z New note
dc z_retrn-z,z_ofset-z,z_retrn-z,z_posjm-z
dc z_setvl-z,z_ptbrk-z,z_ecmds-z,z_setsp-z
z_jump2 dc z_arpeg-z,z_sldup-z,z_sldwn-z,z_tport-z Count <> Speed
dc z_vibra-z,z_tpvsl-z,z_vibvs-z,z_retrn-z
dc z_retrn-z,z_retrn-z,z_volsl-z,z_retrn-z
dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z
z_arpls dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0
dc.b 1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
z_retrn rts
z_arpeg tst d1 CMD 0: Arpeggio
beq.s z_retrn
move.b z_count-z(a5),d0
ext d0
move.b z_arpls(pc,d0.w),d0
beq.s z_arpg0
subq.b #1,d0
beq.s z_arpg1
and #$f,d1
add d1,d1
add 18(a1),d1
add #z_notes-z,d1
move (a5,d1.w),d4
rts
z_arpg1 lsr #4,d1
add d1,d1
add 18(a1),d1
add #z_notes-z,d1
move (a5,d1.w),d4
rts
z_arpg0 move 18(a1),d1
add #z_notes-z,d1
move (a5,d1.w),d4
rts
z_sldup sub d1,d4 CMD 1: Slide up
cmp #$71,d4
bcc.s .1
move #$71,d4
.1 move d4,16(a1)
rts
z_sldwn add d1,d4 CMD 2: Slide down
cmp #$358,d4
bmi.s .1
move #$358,d4
.1 move d4,16(a1)
rts
z_tport tst d1 CMD 3: Tone portamento
beq.s z_port2
move.b d1,22(a1)
z_port2 moveq #0,d0
move.b 22(a1),d0
move 30(a1),d2
cmp d2,d4
bpl.s z_tprtu
add d0,d4
cmp d2,d4
bmi.s .1
move d2,d4
.1 move d4,16(a1)
rts
z_tprtu sub d0,d4
cmp d2,d4
bpl.s .1
move d2,d4
.1 move d4,16(a1)
rts
z_vibra tst.b d1 CMD 4: Vibrato
beq.s z_dovib
move.b d1,26(a1)
z_dovib move.b 28(a1),d0 Vibrate period
add d0,d0
add d0,d0
and #$3f0,d0
moveq #$f,d2
and.b 26(a1),d2
add d0,d2
add #z_vibtb-z,d2
move.b (a5,d2),d2
ext d2
add d2,d4
moveq #-$10,d0 Vibrato speed
and.b 26(a1),d0
lsr.b #2,d0
add.b d0,28(a1)
rts
z_ofset lsl #7,d1 Cmd 9: Set sample offset
cmp 6(a1),d1
bhi.s .2
sub d1,6(a1)
ext.l d1
add.l d1,d1
add.l d1,2(a1)
.2 rts
z_tpvsl bsr z_port2 Cmd 5: Tone portamento and vol slide
bra.s z_volsl
z_vibvs bsr.s z_dovib Cmd 6: Vibrato and volume slide
z_volsl move d1,d0 Cmd A: Volume slide
lsr #4,d0
beq.s .1
add d0,14(a1)
moveq #$40,d2
cmp 14(a1),d2
bpl.s .2
move d2,14(a1)
.2 rts
.1 sub d1,14(a1)
bpl.s .3
clr 14(a1)
.3 rts
z_posjm move.b #$fc,z_pos-z(a5) Cmd B: Position jump
ext d1
add d1,d1
add d1,d1
subq #4,d1
move.b d1,z_song-z(a5)
rts
z_setvl cmp #$40,d1 Cmd C: Set volume
bls.s .1
moveq #$40,d1
.1 move d1,14(a1)
rts
z_ptbrk move.b #$fc,z_pos-z(a5) Cmd D: Pattern break
rts (Parameter not supported!)
z_ecmds moveq #$f,d0 Cmd E: Special commands
and d1,d0
lsr #4,d1
add d1,d1
move z_ejump(pc,d1.w),d1
jmp (a5,d1.w)
z_ejump dc z_filtr-z,z_fsldu-z,z_fsldd-z,z_retrn-z
dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z
dc z_retrn-z,z_retrn-z,z_fvolu-z,z_fvold-z
dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z
z_filtr tst d0 Cmd E0: Set filter
beq.s .1
bset #1,$bfe001
rts
.1 bclr #1,$bfe001
rts
z_fsldu sub d0,d4 CMD E1: Fine slide up
cmp #$71,d4
bpl.s .1
move #$71,d4
.1 move d4,16(a1)
rts
z_fsldd add d0,d4 CMD E2: Fine slide down
cmp #$358,d4
bmi.s .1
move #$358,d4
.1 move d4,16(a1)
rts
z_fvolu add d0,14(a1) Cmd EA: Fine vol slide up
moveq #$40,d2
cmp 14(a1),d2
bpl.s .1
move d2,14(a1)
.1 rts
z_fvold sub d0,14(a1) Cmd EB: Fine vol slide down
bpl.s .1
clr 14(a1)
.1 rts
z_setsp move.b d1,z_speed-z(a5) Cmd F: Set speed
move.b d1,z_count-z(a5)
rts
z_playo moveq #0,d1
z_playn move.l d1,d2 Play notes
and #$0fff,d1
move d1,24(a3) Save effect command
swap d1
and #$7e,d1
beq.s .5
ror.l #8,d2
and #$01f0,d2
bne.s .1
move 20(a3),d2
lea -10(a4,d2.w),a2
add (a2)+,d1
addq.l #2,a2 (sample 0: no volume change!)
bra.s .3
.1 move d2,20(a3) Save sample 0 - pointer
lea -10(a4,d2.w),a2
add (a2)+,d1
move (a2)+,14(a3)
.3 move d1,18(a3)
move z_notes(pc,d1.w),d1
move d1,30(a3)
cmp.b #3,24(a3) Effect 3: don't care about sample
beq.s .2
move d1,16(a3)
move (a3),d1
or d1,z_dmaen-z(a5)
.4 move (a2)+,6(a3)
move (a2)+,12(a3)
move.l (a2)+,2(a3)
move.l (a2)+,8(a3)
.2 rts
.5 ror.l #8,d2 No note: change repeat pointers
and #$01f0,d2
beq.s .2
move d2,20(a3)
lea -8(a4,d2.w),a2
move (a2)+,14(a3)
bra.s .4
z_notes dc 0
dc 856,808,762,720,678,640,604,570,538,508,480,453
dc 428,404,381,360,339,320,302,285,269,254,240,226
dc 214,202,190,180,170,160,151,143,135,127,120,113
dc 850,802,757,715,674,637,601,567,535,505,477,450
dc 425,401,379,357,337,318,300,284,268,253,239,225
dc 213,201,189,179,169,159,150,142,134,126,119,113
dc 844,796,752,709,670,632,597,563,532,502,474,447
dc 422,398,376,355,335,316,298,282,266,251,237,224
dc 211,199,188,177,167,158,149,141,133,125,118,112
dc 838,791,746,704,665,628,592,559,528,498,470,444
dc 419,395,373,352,332,314,296,280,264,249,235,222
dc 209,198,187,176,166,157,148,140,132,125,118,111
dc 832,785,741,699,660,623,588,555,524,495,467,441
dc 416,392,370,350,330,312,294,278,262,247,233,220
dc 208,196,185,175,165,156,147,139,131,124,117,110
dc 826,779,736,694,655,619,584,551,520,491,463,437
dc 413,390,368,347,328,309,292,276,260,245,232,219
dc 206,195,184,174,164,155,146,138,130,123,116,109
dc 820,774,730,689,651,614,580,547,516,487,460,434
dc 410,387,365,345,325,307,290,274,258,244,230,217
dc 205,193,183,172,163,154,145,137,129,122,115,109
dc 814,768,725,684,646,610,575,543,513,484,457,431
dc 407,384,363,342,323,305,288,272,256,242,228,216
dc 204,192,181,171,161,152,144,136,128,121,114,108
dc 907,856,808,762,720,678,640,604,570,538,508,480
dc 453,428,404,381,360,339,320,302,285,269,254,240
dc 226,214,202,190,180,170,160,151,143,135,127,120
dc 900,850,802,757,715,675,636,601,567,535,505,477
dc 450,425,401,379,357,337,318,300,284,268,253,238
dc 225,212,200,189,179,169,159,150,142,134,126,119
dc 894,844,796,752,709,670,632,597,563,532,502,474
dc 447,422,398,376,355,335,316,298,282,266,251,237
dc 223,211,199,188,177,167,158,149,141,133,125,118
dc 887,838,791,746,704,665,628,592,559,528,498,470
dc 444,419,395,373,352,332,314,296,280,264,249,235
dc 222,209,198,187,176,166,157,148,140,132,125,118
dc 881,832,785,741,699,660,623,588,555,524,494,467
dc 441,416,392,370,350,330,312,294,278,262,247,233
dc 220,208,196,185,175,165,156,147,139,131,123,117
dc 875,826,779,736,694,655,619,584,551,520,491,463
dc 437,413,390,368,347,328,309,292,276,260,245,232
dc 219,206,195,184,174,164,155,146,138,130,123,116
dc 868,820,774,730,689,651,614,580,547,516,487,460
dc 434,410,387,365,345,325,307,290,274,258,244,230
dc 217,205,193,183,172,163,154,145,137,129,122,115
dc 862,814,768,725,684,646,610,575,543,513,484,457
dc 431,407,384,363,342,323,305,288,272,256,242,228
dc 216,203,192,181,171,161,152,144,136,128,121,114
z_sinus dc $0000,$0018,$0031,$004a,$0061,$0078,$008d,$00a1
dc $00b4,$00c5,$00d4,$00e0,$00eb,$00f4,$00fa,$00fd
dc $00ff,$00fd,$00fa,$00f4,$00eb,$00e0,$00d4,$00c5
dc $00b4,$00a1,$008d,$0078,$0061,$004a,$0031,$0018
dc $0000,$ffe8,$ffcf,$ffb6,$ff9f,$ff88,$ff73,$ff5f
dc $ff4c,$ff3b,$ff2c,$ff20,$ff15,$ff0c,$ff06,$ff03
dc $ff01,$ff03,$ff06,$ff0c,$ff15,$ff20,$ff2c,$ff3b
dc $ff4c,$ff5f,$ff73,$ff88,$ff9f,$ffb6,$ffcf,$ffe8
** ==== Variables ============================================= **
z_song dc 0
z_pos dc.b 0
z_speed dc.b 0
z_count dc.b 0
even
z_patt dc.l 0
z_dmaen dc 0
z_ociab ds.b 14
z_voi1 dc 1
ds.b 30
z_voi2 dc 2
ds.b 30
z_voi3 dc 4
ds.b 30
z_voi4 dc 8
ds.b 30
z_vibtb ds.b 1024
;; <6>
biisi incbin "darkroom.zen"
biisi_l = *-biisi
even
pic_2 incbin "darkroom.raw"
»»»»»»» bss (fast) »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
section ada,bss
fast_siz = $1000
fast ds.b fast_siz
fractar_1 = fast
zoomaa_1 = fast+200
rotate_1 = fast+400
hold_1 = fast+600
sin_3 = fast
cos_3 = fast+$200
star_3 = fast+$a00
sin_4 = fast
rata_4 = fast+360
;(ds.w 3*lines)
»»»»»»» bss-chip »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
section we,bss_c
z_data ds.b $10000
chip_siz = $30000
chip ds.b chip_siz
g_1 = chip
bpa1_1 = chip+$3000
bpa2_1 = chip+$5800
bpa3_1 = chip+$8000
bpa4_1 = chip+$a800
bpb1_1 = chip+$d000
bpb2_1 = chip+$f800
bpb3_1 = chip+$12000
bpb4_1 = chip+$14800
t_1 = chip+$18000
bpl1_2 = chip
temp_2 = chip+$2828
bpl2_2 = chip+$5050
bpl3_2 = chip+$7850
bpl4_2 = chip+$a050
bpl_tx_2 = chip+$c850
line1_3 = chip
line2_3 = chip+160
l_even_3 = chip+320
l_odd_3 = chip+360
copper1_3 = chip+400
copper2_3 = chip+$5190
cmaps_3 = chip+$a190
bpl1_4 = chip
bpl2_4 = chip+$3200
bpl3_4 = chip+$6400
»»»»»»» copperlistat, ym chip-kama »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
section rw,data_c
copper_0 dc $0100,$0000,$0180,$0000
dc.l -2
»» routine 1
scopa_1 dc $008e,$2c81,$0090,$2cc1
dc $0092,$0038,$0094,$00d0
dc $0108,$0000,$010a,$0000
dc $0100,$4000,$0102,$0000
; dc $0180,$0000,$0182,$0100,$0184,$0200,$0186,$0300
; dc $0188,$0400,$018a,$0500,$018c,$0600,$018e,$0700
; dc $0190,$0800,$0192,$0910,$0194,$0a20,$0196,$0b30
; dc $0198,$0c40,$019a,$0d50,$019c,$0e60,$019e,$0f70
dc $0180,$0000,$0182,$0001,$0184,$0002,$0186,$0003
dc $0188,$0004,$018a,$0005,$018c,$0006,$018e,$0007
dc $0190,$0008,$0192,$0009,$0194,$000a,$0196,$000b
dc $0198,$000c,$019a,$000d,$019c,$000e,$019e,$000f
sptra_1 dc $00e0,$0000,$00e2,$0000
dc $00e4,$0000,$00e6,$0000
dc $00e8,$0000,$00ea,$0000
dc $00ec,$0000,$00ee,$0000
dc.l -2
scopb_1
sptrb_1 dc $00e0,$0000,$00e2,$0000
dc $00e4,$0000,$00e6,$0000
dc $00e8,$0000,$00ea,$0000
dc $00ec,$0000,$00ee,$0000
dc.l -2
»» routine 2
copper_2 dc $008e,$2c81,$0090,$2cc1
dc $0092,$0038,$0094,$00d0
dc $0100,$4000,$0102,$0000
dc $0108,$0000,$010a,$0000
fadehere_2 dc $0180,$0000,$0182,$0226,$0184,$0226,$0186,$033a
dc $0188,$0226,$018a,$033a,$018c,$033a,$018e,$044f
dc $0190,$044f,$0192,$066f,$0194,$066f,$0196,$0aaf
dc $0198,$066f,$019a,$0aaf,$019c,$0aaf,$019e,$0fff
dc.l -2
»» routine 4
copper_4 dc $008e,$2c81,$0090,$2cc1
dc $0092,$0038,$0094,$00d0
dc $0100,$2000,$0102,$0001
dc $0108,$0000,$010a,$0000
dc $0180,$0000,$0182,$0006,$0184,$0006,$0186,$000c
dc $0188,$0ccc,$018a,$0ccf,$018c,$0ccf,$018e,$0ccf
lin1_4 dc $9911,$fffe,$0100,$3000
lin2_4 dc $bf11,$fffe,$0100,$2000
dc.l -2
pic_4 incbin "credits.raw"